﻿using System;
using System.Collections.ObjectModel;

namespace Pfz.RemoteGaming
{
	/// <summary>
	/// Argument passed to the RemoteGameClient.Changed event.
	/// </summary>
	public sealed class RemoteGameChangedEventArgs:
		EventArgs
	{
		/// <summary>
		/// Gets a collection of the added components.
		/// May be null if there are no new components.
		/// </summary>
		public ReadOnlyCollection<RemoteGameComponent> AddedComponents { get; internal set; }

		/// <summary>
		/// Gets a collection of removed components.
		/// May be null if there aren't removed components.
		/// </summary>
		public ReadOnlyCollection<RemoteGameComponent> RemovedComponents { get; internal set; }

		/// <summary>
		/// Gets a dictionary with all changed components, with their respective changed properties and values.
		/// </summary>
		public RemoteGameComponentChanges ComponentChanges { get; internal set; }
	}
}
